﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using moviecentro;
using System.Data;
using CruzSur.Models;

namespace CruzSur.Controllers
{
    public static partial class AppDa
    {

        public static List<ViajeModel> ListarViajes(int Agencia, DateTime FechaIni, DateTime FechaFin, int EstadoViaje)
        {
            // ----- Lista C01
            List<ViajeModel> ListData = new List<ViajeModel>();

            System.Data.SqlClient.SqlParameter[] param = new System.Data.SqlClient.SqlParameter[4];
            param[0] = new SqlParameter("@Agencia_Origen", SqlDbType.Int);
            param[0].Value = Agencia;

            param[1] = new SqlParameter("@FechaIni", SqlDbType.DateTime);
            param[1].Value = FechaIni;

            param[2] = new SqlParameter("@FechaFin", SqlDbType.DateTime);
            param[2].Value = FechaFin;

            param[3] = new SqlParameter("@Estado_Viaje", SqlDbType.Int);
            param[3].Value = EstadoViaje;

            SqlDataReader reader = dbgestor.ListarSql2("exec ViajeListar @Agencia_Origen,@FechaIni,@FechaFin,@Estado_Viaje ", param);

            while (reader.Read())
            {
                ViajeModel ListItem = new ViajeModel();
                ListItem.Placa = reader["Placa"].ToString();
                ListItem.Fecha_Hora = reader.GetDateTime(reader.GetOrdinal("Fecha_Hora"));
                ListItem.LugarOrigen = reader["LugarOrigen"].ToString();
                ListItem.LugarDestino = reader["LugarDestino"].ToString();
                ListItem.CiudadOrigen = reader["Ciudad_Origen"].ToString();
                ListItem.CiudadDestino = reader["Ciudad_Destino"].ToString();
                ListItem.EstadoViaje = reader["Descripcion_Estado_Viaje"].ToString();
                ListItem.TipoServicio = reader["Descripcion_Tipo_Servicio"].ToString();
                ListItem.ID = reader.GetInt32(reader.GetOrdinal("ID_Viaje"));
                ListItem.TipoServicioID = reader.GetInt32(reader.GetOrdinal("Tipo_Servicio"));
                ListItem.HorasRevision = reader.GetInt32(reader.GetOrdinal("HorasRevision"));
                ListData.Add(ListItem);
            }
            reader.Close();

            return ListData;
        }

        public static ViajeModel ListarViajesItem(string IDViaje)
        {
            // ----- Lista C01
            List<ViajeModel> ListData = new List<ViajeModel>();

            System.Data.SqlClient.SqlParameter[] param = new System.Data.SqlClient.SqlParameter[1];
            param[0] = new SqlParameter("@ID_Viaje", SqlDbType.Int);
            param[0].Value = IDViaje;

            SqlDataReader reader = dbgestor.ListarSql2("exec ViajeListar_ID @ID_Viaje ", param);

            while (reader.Read())
            {
                ViajeModel ListItem = new ViajeModel();
                ListItem.Placa = reader["Placa"].ToString();
                ListItem.Fecha_Hora = reader.GetDateTime(reader.GetOrdinal("Fecha_Hora"));
                ListItem.LugarOrigen = reader["LugarOrigen"].ToString();
                ListItem.LugarDestino = reader["LugarDestino"].ToString();
                ListItem.CiudadOrigen = reader["Ciudad_Origen"].ToString();
                ListItem.CiudadDestino = reader["Ciudad_Destino"].ToString();
                ListItem.EstadoViaje = reader["Descripcion_Estado_Viaje"].ToString();
                ListItem.TipoServicio = reader["Descripcion_Tipo_Servicio"].ToString();
                ListItem.ID = reader.GetInt32(reader.GetOrdinal("ID_Viaje"));
                ListItem.TipoServicioID = reader.GetInt32(reader.GetOrdinal("Tipo_Servicio"));
                ListData.Add(ListItem);
            }
            reader.Close();

            return ListData[0];
        }

        public static List<ViajeEvaluacionModel> ListarViajesCheckList(string IDViaje, string TipoServicio)
        {
            // ----- Lista C01
            List<ViajeEvaluacionModel> ListData = new List<ViajeEvaluacionModel>();

            System.Data.SqlClient.SqlParameter[] param = new System.Data.SqlClient.SqlParameter[2];
            param[0] = new SqlParameter("@Id_Viaje", SqlDbType.Int);
            param[0].Value = IDViaje;

            param[1] = new SqlParameter("@Tipo_Evaluacion", SqlDbType.VarChar);
            param[1].Value = TipoServicio;

             
            SqlDataReader reader = dbgestor.ListarSql2("exec ViajeListarCheckList @Id_Viaje,@Tipo_Evaluacion ", param);

            while (reader.Read())
            {
                ViajeEvaluacionModel ListItem = new ViajeEvaluacionModel();
                ListItem.ID = reader.GetInt32(reader.GetOrdinal("ID_Viaje_Evaluacion"));
                ListItem.Descripcion = reader["Evaluacion_Descripcion"].ToString();
                ListItem.Estado = reader.GetBoolean(reader.GetOrdinal("Evaluacion_Estado"));
                ListData.Add(ListItem);
            }
            reader.Close();

            return ListData;
        }

        public static bool GrabarCheckList(string IDViaje, string[] CheckList , string Tipo)
        {
            dbsql.ClearSQL();
            dbsql.AddTable("Viaje_Evaluacion");
            dbsql.AddField(SqlDbType.Bit, "Evaluacion_Estado", false);
            dbsql.AddWhere(SqlDbType.Int, "id_Viaje", IDViaje);
            dbsql.AddWhere(SqlDbType.Int, "Tipo_Evaluacion", Tipo);
            
            dbsql.UpdateNow();


            foreach (string item in CheckList)
            {
                dbsql.ClearSQL();
                dbsql.AddTable("Viaje_Evaluacion");
                dbsql.AddField(SqlDbType.Bit, "Evaluacion_Estado", true);
                dbsql.AddWhere(SqlDbType.VarChar, "ID_Viaje_Evaluacion", item);
                int i = dbsql.UpdateNow();                

            }


            return true;
        }

        public static void ViajeActualizarEstado (string IDViaje)
        {
            dbgestor.ListarSql("exec ViajeActualizarEstado " + IDViaje);
        }

        public static void ViajeActualizarEstadoCalidad(string IDViaje)
        {
            dbgestor.ListarSql("exec ViajeActualizarEstadoCalidad " + IDViaje);
        }

        public static void ViajeActualizarEstado(string IDViaje, string Estado)
        {
            dbgestor.ListarSql("exec ViajeActualizarEstadoItem " + IDViaje + "," + Estado);
        }
    }
}